import { defineConfig } from '@umijs/max';

export default defineConfig({
  // 生产环境配置
  define: {
    'process.env.NODE_ENV': 'production',
    'process.env.API_URL': 'https://api.example.com', // 生产环境API地址
  },
  
  // 生产环境使用 hidden-source-map 以提供源映射而不暴露源代码
  devtool: 'hidden-source-map',
  
  // 生产环境下的打包优化
  hash: true,
  
  // 生产环境下的压缩配置
  jsMinifier: 'terser',
  jsMinifierOptions: {
    compress: {
      drop_console: true, // 移除 console
      drop_debugger: true, // 移除 debugger
      pure_funcs: ['console.log', 'console.info', 'console.debug'], // 移除特定函数调用
    },
  },
  cssMinifier: 'cssnano',
  cssMinifierOptions: {
    preset: [
      'default',
      {
        discardComments: { removeAll: true }, // 移除所有注释
        reduceIdents: false, // 避免过度优化导致的问题
      },
    ],
  },
  
  // 生产环境下的分包配置通过 chainWebpack 在 config.ts 中设置
  
  // 启用 mock
  mock: {
    include: [], // 包含所有 mock 文件
  },
  
  // 生产环境下的公共路径，如果使用CDN可以在这里配置
  // publicPath: 'https://cdn.example.com/',
  
  // 生产环境下的额外优化
  ignoreMomentLocale: true, // 忽略 moment 的本地化文件，减小打包体积
  
  // 生产环境下的构建优化
  mfsu: {
    production: {
      output: {
        buildFailOnError: true, // 构建错误时退出
      },
    },
  },
  
  // 生产环境下的浏览器兼容性配置
  targets: {
    chrome: 80,
    firefox: 80,
    safari: 13,
    edge: 80,
    ios: 10,
  },
});